﻿// owner 蒋家伟

#pragma once
#include "DataSchema_home.h"

namespace jsdk
{
    class ElementId;
    class IElement;
    class UniqueId;
}

namespace jsdk
{
    class DATASCHEMA_EXPORT IElementBasicInfomation
    {
        DEFINE_DRIVER_BASE(IElementBasicInfomation)
    public:
        virtual ~IElementBasicInfomation() {}
#pragma region Set
        /// \ brief 设置当前对象的名称
        virtual void setName(const std::wstring& name) = 0;

        /// \ brief 设置调试信息
        virtual void setDebugInfo(const std::wstring& debugInfo) = 0;
#pragma region Set

#pragma region Get
        /// \ brief 获取当前对象的名称
        virtual const std::wstring& getName() const = 0;

        /// \ brief 是否为临时对象
        /// \ note : 临时对象不会被序列化
        virtual bool isTemporaryObject() const = 0;

        /// \ brief 获取调试信息
        virtual const std::wstring& getDebugInfo() const = 0;

        /// \ brief 获取对象ID
        virtual const ElementId& getElementId() const = 0;

        /// \ brief 获取所属的element
        virtual const IElement* getOwnerElement() const = 0;

        /// \ brief 获取所属的element
        virtual IElement* getOwnerElement() = 0;

        /// \ brief 获取类别UID
        virtual const UniqueId& getTypeUid() const = 0;
#pragma region Get

    };
}
